package it.univaq.disim.mwt.business.impl;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import it.univaq.disim.mwt.business.ClassiService;
import it.univaq.disim.mwt.business.model.Alunno;
import it.univaq.disim.mwt.business.model.Classe;
import it.univaq.disim.mwt.business.model.Corso;
import it.univaq.disim.mwt.business.model.Sezione;
import it.univaq.disim.mwt.business.model.TipologiaLaboratorio;

public class JDBCClasseService implements ClassiService {

	Classe classe = null;
	
	//FUNZIONA
	@Override
	public Classe findClassiById(Long id) {
		
		Connection connection = null;
		PreparedStatement preparedStatement = null;
		ResultSet resultSet = null;
		
		Classe classe=null;
		String sql = "select * from classi where id = ? ";
		
		try {
			connection = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:XE", "school", "school");
			preparedStatement = connection.prepareStatement(sql);
			preparedStatement.setLong(1, id);
			resultSet = preparedStatement.executeQuery();	
			
			resultSet.next();
			Long ide = resultSet.getLong("id");
			Long idSezione = resultSet.getLong("id_sezione");
			String nome = resultSet.getString("nome");
			Long idCorso = resultSet.getLong("id_corso");
			
			
			JDBCSezioneService jdbcSezioneSezione= new JDBCSezioneService();
			Sezione sezione=jdbcSezioneSezione.findSezioniById(idSezione);
			
			
			
			JDBCCorsoService jdbcCorsoService= new JDBCCorsoService();
			Corso corso=jdbcCorsoService.findCorsoById(idCorso);
			
			classe = new Classe(ide, sezione, nome,  corso);
			
			resultSet.close();
			preparedStatement.close();
			connection.close();
			
			return classe;

		} catch (SQLException e) {
			
			e.printStackTrace();
		}
		
		return null;
	}

	//FUNZIONA
	@Override
	public List<Classe> findAllClassi() {
		
		Connection connection = null;
		PreparedStatement preparedStatement = null;
		ResultSet resultSet = null;
		
		List<Classe> listClassi = new ArrayList<Classe>();

		String sql = "select * from classi";
		
		try {
			connection = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:XE", "school", "school");
			preparedStatement = connection.prepareStatement(sql);
			preparedStatement.executeQuery();	
			
			resultSet = preparedStatement.getResultSet();
			
			while(resultSet.next()){
				
				Long ide = resultSet.getLong("id");
				Long idSezione = resultSet.getLong("id_sezione");
				String nome = resultSet.getString("nome");
				Long idCorso = resultSet.getLong("id_corso");
				
				
				JDBCSezioneService jdbcSezioneSezione= new JDBCSezioneService();
				Sezione sezione=jdbcSezioneSezione.findSezioniById(idSezione);
				
				
				
				JDBCCorsoService jdbcCorsoService= new JDBCCorsoService();
				Corso corso=jdbcCorsoService.findCorsoById(idCorso);
				
				classe = new Classe(ide, sezione, nome,  corso);
				
				
	            listClassi.add(classe);
			}
			
			resultSet.close();
			preparedStatement.close();
			connection.close();
		
			return listClassi;
			
		} catch (SQLException e) {
			
			e.printStackTrace();
		}

		return null;
	}
}